Chuyển đổi từ biểu thức bình thường sang ký pháp Ba Lan Kí pháp Ba Lan

Việc tính giá trị một biểu thức viết dưới dạng phép toán sau rất thuận tiện như trên, tuy nhiên, theo thói quen thông thường, việc nhập biểu thức đó vào lại không dễ, người ta thường nhập vào một công thức dưới dạng thông thường (phép toán giữa) rồi dùng chương trình chuyển đổi nó sang dạng phép toán sau.Chúng ta hãy xét biểu thức trong ví dụ trên

Q=a*(b+c)-d^5

Ký hiệu biểu thức ghi dưới dạng phép toán sau là P. Trong quá trình chuyển đổi ta dùng một stack S để lưu các phần tử trong P chưa sử dụng đến. Khi đọc từ trái sang phải biểu thức Q la lần lượt có:

  1. Đọc và ghi nhận giá trị a, ghi giá trị a vào P. Vậy P = "a".
  2. Đọc toán tử "*". Đưa toán tử này vào stack S: S = "*"
  3. Đọc dấu ngoặc mở "(", đưa dấu ngoặc này vào stack: S = "*(".
  4. Đọc hạng tử b, đưa b vào P: P= "a b"
  5. Đọc toán tử "+", đặt "+" vào stack: S ="*(+"
  6. Đọc hạng tử "c", đưa c vào cuối P: P="a b c"
  7. Đọc dấu ngoặc đóng ")". Lần lượt lấy các toán tử ở cuối stack ra khỏi stack đặt vào cuối P cho đến khi gặp dấu ngoặc mở "(" trong stack thì giải phóng nó: S= "*"; P="a b c +"
  8. Đọc toán tử "-". Cuối stack S có toán tử "*" có mức ưu tiên lớn hơn toán tử "-", ta lấy toán tử "*" ra khỏi stack, đặt vào cuối P, đặt toán tử "-" vào stack: S="-"; P=" a b c + * "
  9. Đọc hạng tử d, đưa d vào cuối P. P="a b c + * d"
  10. Đọc toán tử "^", đưa toán tử "^" vào cuối stack: S="-^"
  11. Đọc hằng số 5, đưa 5 vào cuối P: P="a b c + * d 5"
  12. Đã đọc hết biểu thức Q, lần lượt lấy các phần tử cuối trong stack đặt vào P cho đến hết. P="a b c + * d 5 ^ -".

Thuật toán chuyển từ ký pháp trung tố sang ký pháp tiền tố hoặc hậu tố rất gần với cách xử lý các phép tính trong máy tính bấm tay (hay máy tính bỏ túi). Một biểu thức chỉ gồm các phép toán hai ngôi bất kỳ luôn có thể được tính bằng máy tính bấm tay mà không cần dùng dấu ngoặc. Các phép toán ở trước nếu có độ ưu tiên (ưu tiên bởi toán tử hoặc bởi dấu ngoặc) thấp hơn một phép toán ở sau được đẩy vào một ngăn xếp (stack), chỉ khi nào các phép toán ưu tiên hơn ở sau được tính xong, các phép toán ở trước mới được xử lý.